package com.efrei.schoolmanager.model.obj;

import java.io.Serializable;

import com.efrei.schoolmanager.exceptions.LogicException;

public class Ville implements Serializable {
	private static final long serialVersionUID = 2795107961108054845L;
	
	/** Attributes */
	private int villeId;
	private String codePostal;
	private String nom;
	private Pays pays;

	public Ville() {
	}

	public Ville(String codePostal, String nom, Pays pays) {
		super();
		this.codePostal = codePostal;
		this.nom = nom;
		this.pays = pays;
	}
	
	@Override
	public String toString() {
		String sep = " - ";
		return new StringBuilder()
			.append(codePostal)
			.append(sep).append(nom)
			.append(sep).append(pays)
			.toString();
	}

	public int getVilleId() {
		return villeId;
	}

	public void setVilleId(int villeId) {
		this.villeId = villeId;
	}

	public String getCodePostal() {
		return codePostal;
	}

	public void setCodePostal(String codePostal) {
		this.codePostal = codePostal;
	}

	public String getNom() {
		return nom;
	}

	public void setNom(String nom) {
		this.nom = nom;
	}

	public Pays getPays() {
		return pays;
	}

	public void setPays(Pays pays) {
		this.pays = pays;
	}
	
	/**
	 * verifie les champs donnés pour une future ville
	 * @param codePostal trim auto
	 * @param nom trim auto
	 * @param pays
	 * @throws LogicException
	 */
	public static void checkVille(String codePostal, String nom, Pays pays) throws LogicException {
		codePostal = codePostal.trim();
		nom = nom.trim();
		
		if(codePostal==null || codePostal.length()!=5 || nom==null || nom.length()==0 || pays==null)
			throw new LogicException("informations de la ville invalide");
		try {
			if(Integer.parseInt(codePostal)<1)
				throw new LogicException("code postal n'est pas un nombre");
		} catch (NumberFormatException e) {
			throw new LogicException("code postal n'est pas un nombre");
		}
	}
}

